package cn.iocoder.yudao.module.system.dal.dataobject.wishlist;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

/**
 * 用户志愿表 DO
 *
 * @author 芋道源码
 */
@TableName("system_user_wish_list")
@KeySequence("system_user_wish_list_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserWishListDO extends BaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 关联的用户成绩记录ID，每个志愿对应一个成绩记录
     */
    private Long userScoreId;

    /**
     * 招生省份
     */
    private String provinceName;

    /**
     * 高校唯一ID
     */
    private String schoolUuid;

    /**
     * 高校名称
     */
    private String schoolName;

    /**
     * 专业名称
     */
    private String majorName;

    /**
     * 专业代码
     */
    private Integer majorCode;

    /**
     * 录取年份
     */
    private Integer year;

    /**
     * 最高分
     */
    private String highScore;

    /**
     * 平均分
     */
    private String averageScore;

    /**
     * 最低分
     */
    private String lowestScore;

    /**
     * 最低位次
     */
    private String lowestSection;

    /**
     * 录取批次
     */
    private String batchName;

    /**
     * 专业类型
     */
    private String typeName;

    /**
     * 专业分数
     */
    private String proScore;

    /**
     * 选科要求
     */
    private String subjectSelection;

    /**
     * 专业标准代码
     */
    private String majorStandardCode;

    /**
     * 志愿类型：冲刺(rush)、稳妥(stable)、保底(safe)
     */
    private String wishType;

    /**
     * 志愿顺序（在同类型中的排序）
     */
    private Integer wishOrder;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 招生计划信息（JSON格式）
     */
    private String enrollmentPlan;

    // ========== 用户基本信息字段（用于检测信息变更） ==========

    /**
     * 用户当前省份
     */
    private String userProvince;

    /**
     * 用户当前总分
     */
    private Integer userTotalScore;

    /**
     * 用户当前选科
     */
    private String userSubjectSelection;

    /**
     * 用户当前年份
     */
    private Integer userYear;

}
